#include "stm32f10x.h"   // STM32标准库头文件
#include "systick.h"      // 系统滴答定时器（用于延时）
#include "start_freertos.h" // 启动FreeRTOS
#include "Myusart.h"      // 自定义USART模块
#include "stdio.h"        // 标准输入输出（用于printf）


int main()
{
    /*STM32中断优先级分组为4，即4bit都用来表示抢占优先级，范围为：0~15
	 * 优先级分组只需要分组一次即可，以后如果有其他的任务需要用到中断，
	 * 都统一用这个优先级分组，千万不要再分组，切忌。*/
    // 设置中断优先级分组（2位抢占优先级，2位响应优先级）
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    // ===== 系统基础组件初始化 =====
    SysTick_Init();         
    USART1_Init(115200);      // 初始化USART1，波特率115200
   
    //开始启动任务
	freertos_start();
}

// printf函数重定向（自动调用）
int fputc(int ch, FILE *p)
{
    // 发送一个字符到USART1
    USART_SendData(USART1, (u8)ch);
    
    // 等待发送寄存器空（TXE=发送数据寄存器空标志）
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
    
    return ch; // 返回发送的字符
}